home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / LANG / C / LIB / DESK / CORE / Desk / h_doc / KernelSWIs < prev    next >
Text File  |  1996-07-03  |  10KB  |  325 lines

  1. /*
  2.     ####             #    #     # #
  3.     #   #            #    #       #          The FreeWare C library for 
  4.     #   #  ##   ###  #  # #     # ###             RISC OS machines
  5.     #   # #  # #     # #  #     # #  #   ___________________________________
  6.     #   # ####  ###  ##   #     # #  #                                      
  7.     #   # #        # # #  #     # #  #    Please refer to the accompanying
  8.     ####   ### ####  #  # ##### # ###    documentation for conditions of use
  9.     ________________________________________________________________________
  10.  
  11.     File:    KernelSWIs.h
  12.     Author:  Copyright © 1993, 1994 Jason Howat
  13.                          1995       Sergio Monesi, Julian Smith
  14.     Version: 1.03 (02 Sep 1995)
  15.     Purpose: General low level SWI veneers.
  16.     Mods:    07 Jun 1995 Sergio Monesi: Added Desk_OS_SWINumberTo/FromString
  17.              13 Jul 1995 Sergio Monesi: Added Desk_OS_GSTrans
  18.              02 Sep 1995 JH Added Desk_osbyte_WRITEVDUDRIVERBANK and 
  19.                             Desk_osbyte_WRITEDISPLAYHARDWAREBANK.
  20.              13 Sep 1995 JS Added Desk_OS_ReadVarVal_GetLength and
  21.                             Desk_OS_ReadVarVal_ReadIntoBuffer,
  22.                             Desk_OS_ReadVarVal_AutoAlloc.
  23.              18 Jun 1996 JS Added Desk_OS_Byte_ReadCMOS,
  24.                             Desk_OS_Byte_WriteCMOS and 
  25.                             Desk_OS_Byte_WriteCMOSMask.
  26. */
  27.  
  28. #ifndef __Desk_KernelSWIs_h
  29. #define __Desk_KernelSWIs_h
  30.  
  31. #ifdef __cplusplus
  32.     extern "C" {
  33. #endif
  34.  
  35.  
  36. #ifndef __Desk_Core_h
  37. #include "Desk.Core.h"
  38. #endif
  39.  
  40.  
  41. /* Desk_OS_Byte and Desk_OS_Word -----------------------------------------------------
  42.  *
  43.  */
  44. typedef enum
  45. {
  46.   Desk_osbyte_DISPLAYOSVERSION = 0,
  47.   Desk_osbyte_SPECIFYINPUT = 2,
  48.   Desk_osbyte_SPECIFYOUTPUT,
  49.   Desk_osbyte_CURSORKEYSTATUS,
  50.   Desk_osbyte_WRITEPRINTERDRIVERTYPE,
  51.   Desk_osbyte_WRITEPRINTERIGNORECHAR,
  52.   Desk_osbyte_WRITERS423RXRATE,
  53.   Desk_osbyte_WRITERS423TXRATE,
  54.   Desk_osbyte_WRITEDURATION1STFLASHCOLOUR,
  55.   Desk_osbyte_WRITEDURATION2NDFLASHCOLOUR,
  56.   Desk_osbyte_WRITEKEYREPEATDELAY,
  57.   Desk_osbyte_WRITEKEYREPEATRATE,
  58.   Desk_osbyte_DISABLEEVENT,
  59.   Desk_osbyte_ENABLEEVENT,
  60.   Desk_osbyte_FLUSHBUFFER,
  61.   Desk_osbyte_RESETFUNCTIONKEYS = 18,
  62.   Desk_osbyte_WAITFORVSYNC,
  63.   Desk_osbyte_RESETFONTDEFINITIONS,
  64.   Desk_osbyte_FLUSHSELECTEDBUFFER,
  65.   Desk_osbyte_RESETGROUPOFFONTDEFINITIONS = 25,
  66.   Desk_osbyte_RW_COUNTRYNUMBER = 70,
  67.   Desk_osbyte_RW_ALPHABET = 71,
  68.   Desk_osbyte_RW_KEYBOARD = 71,
  69.   Desk_osbyte_SELECTPOINTER = 106,
  70.   Desk_osbyte_ACTIVATEMOUSE = 106,
  71.   Desk_osbyte_WRITEVDUDRIVERBANK = 112,
  72.   Desk_osbyte_WRITEDISPLAYHARDWAREBANK,
  73.   Desk_osbyte_WRITESHADOWSTATE,
  74.   Desk_osbyte_READVDUSTATUS = 117,
  75.   Desk_osbyte_REFLECTKEYBOARDSTATUSINLEDS,
  76.   Desk_osbyte_KEYBOARDSCAN = 121,
  77.   Desk_osbyte_KEYBOARDSCANNOSHIFT,
  78.   Desk_osbyte_CLEARESCAPECONDITION = 124,
  79.   Desk_osbyte_SETESCAPECONDITION,
  80.   Desk_osbyte_ACKNOWLEDGEESCAPECONDITION,
  81.   Desk_osbyte_CHECKFOREOF,
  82.   Desk_osbyte_GETBUFFERORMOUSESTATUS,
  83.   Desk_osbyte_SCANFORKEY = 129,
  84.   Desk_osbyte_READOSIDENTIFIER = 129,
  85.   Desk_osbyte_READTEXTCURSORPOSITION = 134,
  86.   Desk_osbyte_READCHARACTERATTEXTCURSOR = 135,
  87.   Desk_osbyte_READSCREENMODE = 135,
  88.   Desk_osbyte_INSERTCHARACTERCODEINTOBUFFER = 138,
  89.   Desk_osbyte_WRITEFSOPTIONS,
  90.   Desk_osbyte_ISSUEMODULESERVICECALL = 143,
  91.   Desk_osbyte_SETTVCHARACTERISTICS,
  92.   Desk_osbyte_GETCHARACTERFROMBUFFER,
  93.   Desk_osbyte_EXAMINEBUFFERSTATUS = 152,
  94.   Desk_osbyte_INSERTCHARACTERINTOBUFFER,
  95.   Desk_osbyte_RW_ASYNCCOMMSSTATE = 156,
  96.   Desk_osbyte_READVDUVARIABLE = 160,
  97.   Desk_osbyte_READCMOSRAM,
  98.   Desk_osbyte_WRITECMOSRAM,
  99.   Desk_osbyte_RW_GENERALGRAPHICSINFO,
  100.   Desk_osbyte_READOUTPUTCURSORPOSITION = 165,
  101.   Desk_osbyte_RW_50HZCOUNTER = 176,
  102.   Desk_osbyte_READINPUTSOURCE,
  103.   Desk_osbyte_RW_RS423INPUTINTERPTRETATION = 181,
  104.   Desk_osbyte_RW_NOIGNORESTATE,
  105.   Desk_osbyte_RW_RS423BUSYFLAG = 191,
  106.   Desk_osbyte_READRS423CONTROLBYTE,
  107.   Desk_osbyte_RW_FLASHCOUNTER,
  108.   Desk_osbyte_READDURATION2NDFLASHCOLOUR,
  109.   Desk_osbyte_READDURATION1STFLASHCOLOUR,
  110.   Desk_osbyte_RW_KEYREPEATDELAY,
  111.   Desk_osbyte_RW_KEYREPEATRATE,
  112.   Desk_osbyte_RW_EXECFILEHANDLE,
  113.   Desk_osbyte_RW_SPOOLFILEHANDLE,
  114.   Desk_osbyte_RW_BREAKESCAPEEFFECT,
  115.   Desk_osbyte_RW_KEYBOARDDISABLEFLAG,
  116.   Desk_osbyte_RW_KEYBOARDSTATUSBYTE,
  117.   Desk_osbyte_RW_RS423INPUTBUFFERMINSPACE,
  118.   Desk_osbyte_RW_RS423IGNOREFLAG,
  119.   Desk_osbyte_RW_BELLCHANNEL = 211,
  120.   Desk_osbyte_RW_BELLVOLUME,
  121.   Desk_osbyte_RW_BELLFREQUENCY,
  122.   Desk_osbyte_RW_BELLDURATION,
  123.   Desk_osbyte_RW_FUNCTIONKEYSTRINGLENGTH = 216,
  124.   Desk_osbyte_RW_PAGEDMODELINECOUNT,
  125.   Desk_osbyte_RW_BYTESINVDUQUEUE,
  126.   Desk_osbyte_RW_TABKEYCODE,
  127.   Desk_osbyte_RW_ESCAPECHARACTER,
  128.   Desk_osbyte_RW_INTERPRETATIONOFBUFFERCODES_C0_CF,
  129.   Desk_osbyte_RW_INTERPRETATIONOFBUFFERCODES_D0_DF,
  130.   Desk_osbyte_RW_INTERPRETATIONOFBUFFERCODES_E0_EF,
  131.   Desk_osbyte_RW_INTERPRETATIONOFBUFFERCODES_F0_FF,
  132.   Desk_osbyte_RW_FUNCTIONKEYINTERPRETATION,
  133.   Desk_osbyte_RW_SHIFTFUNCTIONKEYINTERPRETATION,
  134.   Desk_osbyte_RW_CTRLFUNCTIONKEYINTERPRETATION,
  135.   Desk_osbyte_RW_CTRLSHIFTFUNCTIONKEYINTERPRETATION,
  136.   Desk_osbyte_RW_ESCAPEKEYSTATUS,
  137.   Desk_osbyte_RW_ESCAPEEFFECTS,
  138.   Desk_osbyte_RW_CHARACTERDESTINATIONSTATUS = 236,
  139.   Desk_osbyte_RW_CURSORKEYSTATUS,
  140.   Desk_osbyte_RW_NUMERICKEYPADINTERPRETATION,
  141.   Desk_osbyte_READCOUNTRYFLAG = 240,
  142.   Desk_osbyte_READRS423BAUDRATES = 242,
  143.   Desk_osbyte_READTIMERSWITCHSTATE,
  144.   Desk_osbyte_READPRINTERDRIVERTYPE = 245,
  145.   Desk_osbyte_RW_PRINTERIGNORECHARACTER,
  146.   Desk_osbyte_RW_BREAKKEYACTIONS,
  147.   Desk_osbyte_READVDUDRIVERSCREENBANK = 250,
  148.   Desk_osbyte_READDISPLAYSCREENBANK,
  149.   Desk_osbyte_READLASTBREAKTYPE = 253,
  150.   Desk_osbyte_RW_EFFECTOFSHIFTCTRLONNUMERICKEYPAD,
  151.   Desk_osbyte_RW_BOOTOPTION
  152. } Desk_osbyte_number;
  153.  
  154. void    Desk_OS_Byte(Desk_osbyte_number reason, int r1in, int r2in,
  155.                                         int *r1out, int *r2out);
  156.  
  157.  
  158. typedef enum
  159. {
  160.   Desk_osword_READLINE = 0,
  161.   Desk_osword_READSYSCLOCK,
  162.   Desk_osword_WRITESYSCLOCK,
  163.   Desk_osword_READINTERVALTIMER,
  164.   Desk_osword_WRITEINTERVALTIMER,
  165.   Desk_osword_READPIXELCOLOUR = 9,
  166.   Desk_osword_READCHARACTERDEFN,
  167.   Desk_osword_READPALETTE,
  168.   Desk_osword_WRITEPALETTE,
  169.   Desk_osword_READGFXCURSORS,
  170.   Desk_osword_READCMOSCLOCK,
  171.   Desk_osword_WRITECMOSCLOCK,
  172.   Desk_osword_DEFINEPOINTERANDMOUSE = 21,
  173.   Desk_osword_WRITESCREENBASE
  174. } Desk_osword_number;
  175.  
  176. void    Desk_OS_Word(Desk_osword_number reason, void *Desk_param_block);
  177.  
  178.  
  179.  
  180. extern Desk_bool Desk_OS_ReadVarVal(const char *varname, char *buf, int bufsize);
  181. /*  Read an OS Variable value.
  182.  *  Fills buf with the variable's value. Returns Desk_bool_TRUE if it succeeds
  183.  *  (see PRM 1-309).
  184.  */
  185.  
  186.  
  187. extern int    Desk_OS_ReadVarVal_GetLength( const char *varname);
  188. /*
  189. Purpose:    Finding the length of the value of a system variable.
  190. Inputs:        'varname'    Name of system variable.
  191. Returns:    Length of the system variable's value, excluding terminating
  192.         '\0', or raises an Error2 if the variable doesn't exist. 
  193.  
  194. Notes:        Doesn't work with RISC OS 2 - system variables are 256
  195.         chrs max.
  196.  */
  197.  
  198.  
  199. extern int    Desk_OS_ReadVarVal_GetLength_Raw( const char *varname);
  200. /*
  201. Returns r2 value from OS_ReadVarVal. See PRM 1-309
  202.  */
  203.  
  204.  
  205. extern int    Desk_OS_ReadVarVal_ReadIntoBuffer( char *buffer, const char *varname, int bufflen);
  206. /*
  207. Purpose:    Reads the value of a system variable into the supplied
  208.         buffer.
  209. Inputs:        'buffer'    Pointer to buffer.
  210.         'varname'    Name of system variable.
  211.         'bufflen'    Length of buffer.
  212. Returns:    Length of string put into buffer.
  213.  
  214. Eg to read a variable:
  215.  
  216. {
  217. int    l = Desk_OS_ReadVarVal_GetLength( varname);
  218. if (l>=0)    {
  219.     char    *buffer = Desk_DeskMem_Malloc( 1+l);
  220.     Desk_OS_ReadVarVal_ReadIntoBuffer( buffer, varname, 1+l);
  221.     ...
  222.     }
  223. }
  224.  */
  225.  
  226.  
  227. extern char    *Desk_OS_ReadVarVal_AutoAlloc( const char *varname);
  228. /*
  229. Purpose:    Allocates a suitably-sized buffer with DeskMem and reads
  230.         a system variable's value into the buffer.
  231. Inputs:        varname    - name of the system variable.
  232. Returns:    pointer to a buffer containg the variable's value. This buffer
  233.         is allocated using Desk_DeskMem_Malloc.
  234.         Raises an Error2 if the variable doesn't exist.
  235.  */
  236.  
  237. typedef enum
  238. {
  239.   Desk_modevar_MODEFLAGS = 0,
  240.   Desk_modevar_RIGHTCOLUMN,
  241.   Desk_modevar_BOTTOMROW,
  242.   Desk_modevar_NCOLOUR,
  243.   Desk_modevar_XEIGFACTOR,
  244.   Desk_modevar_YEIGFACTOR,
  245.   Desk_modevar_LINELENGTH,
  246.   Desk_modevar_SCREENSIZE,
  247.   Desk_modevar_YSHIFTFACTOR,
  248.   Desk_modevar_LOG2BPP,
  249.   Desk_modevar_LOG2BPC,
  250.   Desk_modevar_XWINDOWLIMIT,
  251.   Desk_modevar_YWINDOWLIMIT
  252. } Desk_mode_variable;
  253.  
  254. extern void    Desk_OS_ReadModeVariable(int mode, Desk_mode_variable variable,
  255.                                      int *value);
  256.  
  257.  
  258. void    Desk_OS_SWINumberToString( int number, char *buffer, int size);
  259. /*
  260. Purpose:  Converts a SWI number to the corresponding string.
  261.             (SWI veneer for SWI Desk_OS_NumberToString)
  262. Inputs:   number - the SWI number
  263.           buffer - the buffer where the string will be stored
  264.           size - the size of the buffer
  265. Outputs:  -
  266. Returns:  NULL if no errors, otherwise a pointer to the error
  267. Errors:   -
  268. SeeAlso:  Desk_OS_SWINumberFromString; SWI
  269. */
  270.  
  271.  
  272. void    Desk_OS_SWINumberFromString( const char *string, int *number);
  273. /*
  274. Purpose:  Converts a string to a SWI number.
  275.           (SWI veneer for SWI Desk_OS_NumberFromString)
  276. Inputs:   string - the string to convert
  277. Outputs:  number - the resulting SWI number
  278. Returns:  NULL if no errors, otherwise a pointer to the error
  279. Errors:   -
  280. SeeAlso:  Desk_OS_SWINumberToString; SWI
  281. */
  282.  
  283.  
  284.  
  285. void    Desk_OS_GSTrans(const char *string, char *buffer, int size, char **end);
  286. /*
  287. Purpose:  Convert a string using GS operations.
  288.           (SWI veneer for SWI Desk_OS_GSTrans)
  289. Inputs:   string - the string to convert
  290.           buffer - the buffer where the converted string will be stored
  291.           size - the size of the buffer
  292. Outputs:  end - pointer to the character after terminator
  293. Returns:  NULL if no errors, otherwise a pointer to the error
  294. */
  295.  
  296.  
  297.  
  298. void    Desk_OS_CLI(const char *cmd);
  299. /*
  300. Purpose:  Executes a *-command
  301.           (SWI veneer for SWI Desk_OS_CLI)
  302. Inputs:   cmd - the command string
  303. Returns:  NULL if no errors, otherwise a pointer to the error
  304. */
  305.  
  306.  
  307. int    Desk_OS_Byte_ReadCMOS( int location);
  308.  
  309. void    Desk_OS_Byte_WriteCMOS( int location, int value);
  310.  
  311. void    Desk_OS_Byte_WriteCMOSMask( int location, int mask, int value);
  312. /*
  313. Writes 'value' to just those bits that are set in 'mask'.
  314.  */
  315.  
  316.  
  317.  
  318. #ifdef __cplusplus
  319. }
  320. #endif
  321.  
  322.  
  323. #endif
  324.  
  325.